package org.ns.summer.example.controller;

import org.ns.summer.beans.anns.Autowired;
import org.ns.summer.example.interceptor.LoginVerify;
import org.ns.summer.example.interceptor.Security;
import org.ns.summer.example.interceptor.Token;
import org.ns.summer.example.pojo.UserInfoResp;
import org.ns.summer.example.pojo.UserLoginResp;
import org.ns.summer.example.service.UserService;
import org.ns.summer.mvc.anns.Controller;
import org.ns.summer.mvc.anns.RequestMapping;
import org.ns.summer.mvc.anns.RequestParam;
import org.ns.summer.mvc.anns.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;

    @RequestMapping("/login")
    @ResponseBody
    public UserLoginResp login(@RequestParam("username") String username,
                               @RequestParam("password") String password) {
        // 用户登陆，返回一个token
        // 业务请求的时候在head或参数中携带token
        return userService.login(username, password);
    }


    @LoginVerify // 登陆校验
    @RequestMapping("/info")
    @ResponseBody
    public UserInfoResp info(@Token Long userId) {
        // 获得自己的用户信息
        return userService.getUserInfo(userId);
    }

    @Security({"superAdmin"}) // 角色校验 ， superAdmin = 超级管理
    @RequestMapping("/roleTest")
    @ResponseBody
    public String roleTest() {
        // 角色校验 必须登陆、使用token调用此接口，否则无效！
        // @Security extends @LoginVerify 继承了LoginVerify，所以需要有登陆状态
        return "校验通过";
    }
}
